﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NDF.Web.Mvc
{
    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的一元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">
    ///// 一个 <see cref="System.Type"/> 类型，为 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 或其子类；
    ///// 表示 Controller 或 Action 可绕过的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 验证服务。
    ///// </typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1> : AllowAuthorizeAttribute where T1 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute() : base(typeof(T1))
    //    {
    //    }
    //}


    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的二元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T2">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1, T2> : AllowAuthorizeAttribute
    //    where T1 : AuthorizeAttribute
    //    where T2 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute() : base(typeof(T1), typeof(T2))
    //    {
    //    }
    //}


    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的三元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">
    ///// 一个 <see cref="System.Type"/> 类型，为 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 或其子类；
    ///// 表示 Controller 或 Action 可绕过的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 验证服务。
    ///// </typeparam>
    ///// <typeparam name="T2">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T3">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1, T2, T3> : AllowAuthorizeAttribute
    //    where T1 : AuthorizeAttribute
    //    where T2 : AuthorizeAttribute
    //    where T3 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute()
    //        : base(typeof(T1), typeof(T2), typeof(T3))
    //    {
    //    }
    //}


    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的四元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">
    ///// 一个 <see cref="System.Type"/> 类型，为 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 或其子类；
    ///// 表示 Controller 或 Action 可绕过的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 验证服务。
    ///// </typeparam>
    ///// <typeparam name="T2">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T3">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T4">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1, T2, T3, T4> : AllowAuthorizeAttribute
    //    where T1 : AuthorizeAttribute
    //    where T2 : AuthorizeAttribute
    //    where T3 : AuthorizeAttribute
    //    where T4 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute()
    //        : base(typeof(T1), typeof(T2), typeof(T3), typeof(T4))
    //    {
    //    }
    //}


    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的五元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">
    ///// 一个 <see cref="System.Type"/> 类型，为 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 或其子类；
    ///// 表示 Controller 或 Action 可绕过的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 验证服务。
    ///// </typeparam>
    ///// <typeparam name="T2">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T3">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T4">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T5">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1, T2, T3, T4, T5> : AllowAuthorizeAttribute
    //    where T1 : AuthorizeAttribute
    //    where T2 : AuthorizeAttribute
    //    where T3 : AuthorizeAttribute
    //    where T4 : AuthorizeAttribute
    //    where T5 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute()
    //        : base(typeof(T1), typeof(T2), typeof(T3), typeof(T4), typeof(T5))
    //    {
    //    }
    //}


    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的六元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">
    ///// 一个 <see cref="System.Type"/> 类型，为 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 或其子类；
    ///// 表示 Controller 或 Action 可绕过的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 验证服务。
    ///// </typeparam>
    ///// <typeparam name="T2">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T3">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T4">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T5">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T6">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1, T2, T3, T4, T5, T6> : AllowAuthorizeAttribute
    //    where T1 : AuthorizeAttribute
    //    where T2 : AuthorizeAttribute
    //    where T3 : AuthorizeAttribute
    //    where T4 : AuthorizeAttribute
    //    where T5 : AuthorizeAttribute
    //    where T6 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute()
    //        : base(typeof(T1), typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6))
    //    {
    //    }
    //}


    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的七元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">
    ///// 一个 <see cref="System.Type"/> 类型，为 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 或其子类；
    ///// 表示 Controller 或 Action 可绕过的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 验证服务。
    ///// </typeparam>
    ///// <typeparam name="T2">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T3">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T4">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T5">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T6">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T7">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1, T2, T3, T4, T5, T6, T7> : AllowAuthorizeAttribute
    //    where T1 : AuthorizeAttribute
    //    where T2 : AuthorizeAttribute
    //    where T3 : AuthorizeAttribute
    //    where T4 : AuthorizeAttribute
    //    where T5 : AuthorizeAttribute
    //    where T6 : AuthorizeAttribute
    //    where T7 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute()
    //        : base(typeof(T1), typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7))
    //    {
    //    }
    //}


    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的八元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">
    ///// 一个 <see cref="System.Type"/> 类型，为 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 或其子类；
    ///// 表示 Controller 或 Action 可绕过的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 验证服务。
    ///// </typeparam>
    ///// <typeparam name="T2">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T3">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T4">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T5">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T6">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T7">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T8">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1, T2, T3, T4, T5, T6, T7, T8> : AllowAuthorizeAttribute
    //    where T1 : AuthorizeAttribute
    //    where T2 : AuthorizeAttribute
    //    where T3 : AuthorizeAttribute
    //    where T4 : AuthorizeAttribute
    //    where T5 : AuthorizeAttribute
    //    where T6 : AuthorizeAttribute
    //    where T7 : AuthorizeAttribute
    //    where T8 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute()
    //        : base(typeof(T1), typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8))
    //    {
    //    }
    //}


    ///// <summary>
    ///// 表示一个特性，该特性用于标记在授权期间要跳过指定或所有的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 的控制器和操作。
    ///// 该类型相当于类型 <see cref="NDF.Web.Mvc.AllowAuthorizeAttribute"/> 的九元泛型表现形式。
    ///// </summary>
    ///// <typeparam name="T1">
    ///// 一个 <see cref="System.Type"/> 类型，为 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 或其子类；
    ///// 表示 Controller 或 Action 可绕过的 <see cref="NDF.Web.Mvc.AuthorizeAttribute"/> 验证服务。
    ///// </typeparam>
    ///// <typeparam name="T2">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T3">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T4">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T5">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T6">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T7">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T8">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    ///// <typeparam name="T9">同泛型类型参数 <paramref name="T1"/> 。</typeparam>
    //[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    //public class AllowAuthorizeAttribute<T1, T2, T3, T4, T5, T6, T7, T8, T9> : AllowAuthorizeAttribute
    //    where T1 : AuthorizeAttribute
    //    where T2 : AuthorizeAttribute
    //    where T3 : AuthorizeAttribute
    //    where T4 : AuthorizeAttribute
    //    where T5 : AuthorizeAttribute
    //    where T6 : AuthorizeAttribute
    //    where T7 : AuthorizeAttribute
    //    where T8 : AuthorizeAttribute
    //    where T9 : AuthorizeAttribute
    //{
    //    public AllowAuthorizeAttribute()
    //        : base(typeof(T1), typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9))
    //    {
    //    }
    //}
}
